<!DOCTYPE html><html><head>
      <title>Rust&#x6E90;&#x7801;&#x7EC4;&#x7EC7;&#x7ED3;&#x6784;</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      
      
        <script type="text/x-mathjax-config">
          MathJax.Hub.Config({"extensions":["tex2jax.js"],"jax":["input/TeX","output/HTML-CSS"],"messageStyle":"none","tex2jax":{"processEnvironments":false,"processEscapes":true,"inlineMath":[["$","$"],["\\(","\\)"]],"displayMath":[["$$","$$"],["\\[","\\]"]]},"TeX":{"extensions":["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},"HTML-CSS":{"availableFonts":["TeX"]}});
        </script>
        <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
        
      
      
      
      <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mermaid@8.5.2/dist/mermaid.min.js"></script>
      
      
      
      
      
      <style>
      /**
 * prism.js Github theme based on GitHub's theme.
 * @author Sam Clarke
 */
code[class*="language-"],
pre[class*="language-"] {
  color: #333;
  background: none;
  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  word-wrap: normal;
  line-height: 1.4;

  -moz-tab-size: 8;
  -o-tab-size: 8;
  tab-size: 8;

  -webkit-hyphens: none;
  -moz-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
}

/* Code blocks */
pre[class*="language-"] {
  padding: .8em;
  overflow: auto;
  /* border: 1px solid #ddd; */
  border-radius: 3px;
  /* background: #fff; */
  background: #f5f5f5;
}

/* Inline code */
:not(pre) > code[class*="language-"] {
  padding: .1em;
  border-radius: .3em;
  white-space: normal;
  background: #f5f5f5;
}

.token.comment,
.token.blockquote {
  color: #969896;
}

.token.cdata {
  color: #183691;
}

.token.doctype,
.token.punctuation,
.token.variable,
.token.macro.property {
  color: #333;
}

.token.operator,
.token.important,
.token.keyword,
.token.rule,
.token.builtin {
  color: #a71d5d;
}

.token.string,
.token.url,
.token.regex,
.token.attr-value {
  color: #183691;
}

.token.property,
.token.number,
.token.boolean,
.token.entity,
.token.atrule,
.token.constant,
.token.symbol,
.token.command,
.token.code {
  color: #0086b3;
}

.token.tag,
.token.selector,
.token.prolog {
  color: #63a35c;
}

.token.function,
.token.namespace,
.token.pseudo-element,
.token.class,
.token.class-name,
.token.pseudo-class,
.token.id,
.token.url-reference .token.variable,
.token.attr-name {
  color: #795da3;
}

.token.entity {
  cursor: help;
}

.token.title,
.token.title .token.punctuation {
  font-weight: bold;
  color: #1d3e81;
}

.token.list {
  color: #ed6a43;
}

.token.inserted {
  background-color: #eaffea;
  color: #55a532;
}

.token.deleted {
  background-color: #ffecec;
  color: #bd2c00;
}

.token.bold {
  font-weight: bold;
}

.token.italic {
  font-style: italic;
}


/* JSON */
.language-json .token.property {
  color: #183691;
}

.language-markup .token.tag .token.punctuation {
  color: #333;
}

/* CSS */
code.language-css,
.language-css .token.function {
  color: #0086b3;
}

/* YAML */
.language-yaml .token.atrule {
  color: #63a35c;
}

code.language-yaml {
  color: #183691;
}

/* Ruby */
.language-ruby .token.function {
  color: #333;
}

/* Markdown */
.language-markdown .token.url {
  color: #795da3;
}

/* Makefile */
.language-makefile .token.symbol {
  color: #795da3;
}

.language-makefile .token.variable {
  color: #183691;
}

.language-makefile .token.builtin {
  color: #0086b3;
}

/* Bash */
.language-bash .token.keyword {
  color: #0086b3;
}

/* highlight */
pre[data-line] {
  position: relative;
  padding: 1em 0 1em 3em;
}
pre[data-line] .line-highlight-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  background-color: transparent;
  display: block;
  width: 100%;
}

pre[data-line] .line-highlight {
  position: absolute;
  left: 0;
  right: 0;
  padding: inherit 0;
  margin-top: 1em;
  background: hsla(24, 20%, 50%,.08);
  background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
  pointer-events: none;
  line-height: inherit;
  white-space: pre;
}

pre[data-line] .line-highlight:before, 
pre[data-line] .line-highlight[data-end]:after {
  content: attr(data-start);
  position: absolute;
  top: .4em;
  left: .6em;
  min-width: 1em;
  padding: 0 .5em;
  background-color: hsla(24, 20%, 50%,.4);
  color: hsl(24, 20%, 95%);
  font: bold 65%/1.5 sans-serif;
  text-align: center;
  vertical-align: .3em;
  border-radius: 999px;
  text-shadow: none;
  box-shadow: 0 1px white;
}

pre[data-line] .line-highlight[data-end]:after {
  content: attr(data-end);
  top: auto;
  bottom: .4em;
}html body{font-family:"Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif;font-size:16px;line-height:1.6;color:#333;background-color:#fff;overflow:initial;box-sizing:border-box;word-wrap:break-word}html body>:first-child{margin-top:0}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{line-height:1.2;margin-top:1em;margin-bottom:16px;color:#000}html body h1{font-size:2.25em;font-weight:300;padding-bottom:.3em}html body h2{font-size:1.75em;font-weight:400;padding-bottom:.3em}html body h3{font-size:1.5em;font-weight:500}html body h4{font-size:1.25em;font-weight:600}html body h5{font-size:1.1em;font-weight:600}html body h6{font-size:1em;font-weight:600}html body h1,html body h2,html body h3,html body h4,html body h5{font-weight:600}html body h5{font-size:1em}html body h6{color:#5c5c5c}html body strong{color:#000}html body del{color:#5c5c5c}html body a:not([href]){color:inherit;text-decoration:none}html body a{color:#08c;text-decoration:none}html body a:hover{color:#00a3f5;text-decoration:none}html body img{max-width:100%}html body>p{margin-top:0;margin-bottom:16px;word-wrap:break-word}html body>ul,html body>ol{margin-bottom:16px}html body ul,html body ol{padding-left:2em}html body ul.no-list,html body ol.no-list{padding:0;list-style-type:none}html body ul ul,html body ul ol,html body ol ol,html body ol ul{margin-top:0;margin-bottom:0}html body li{margin-bottom:0}html body li.task-list-item{list-style:none}html body li>p{margin-top:0;margin-bottom:0}html body .task-list-item-checkbox{margin:0 .2em .25em -1.8em;vertical-align:middle}html body .task-list-item-checkbox:hover{cursor:pointer}html body blockquote{margin:16px 0;font-size:inherit;padding:0 15px;color:#5c5c5c;background-color:#f0f0f0;border-left:4px solid #d6d6d6}html body blockquote>:first-child{margin-top:0}html body blockquote>:last-child{margin-bottom:0}html body hr{height:4px;margin:32px 0;background-color:#d6d6d6;border:0 none}html body table{margin:10px 0 15px 0;border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}html body table th{font-weight:bold;color:#000}html body table td,html body table th{border:1px solid #d6d6d6;padding:6px 13px}html body dl{padding:0}html body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:bold}html body dl dd{padding:0 16px;margin-bottom:16px}html body code{font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-size:.85em !important;color:#000;background-color:#f0f0f0;border-radius:3px;padding:.2em 0}html body code::before,html body code::after{letter-spacing:-0.2em;content:"\00a0"}html body pre>code{padding:0;margin:0;font-size:.85em !important;word-break:normal;white-space:pre;background:transparent;border:0}html body .highlight{margin-bottom:16px}html body .highlight pre,html body pre{padding:1em;overflow:auto;font-size:.85em !important;line-height:1.45;border:#d6d6d6;border-radius:3px}html body .highlight pre{margin-bottom:0;word-break:normal}html body pre code,html body pre tt{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}html body pre code:before,html body pre tt:before,html body pre code:after,html body pre tt:after{content:normal}html body p,html body blockquote,html body ul,html body ol,html body dl,html body pre{margin-top:0;margin-bottom:16px}html body kbd{color:#000;border:1px solid #d6d6d6;border-bottom:2px solid #c7c7c7;padding:2px 4px;background-color:#f0f0f0;border-radius:3px}@media print{html body{background-color:#fff}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{color:#000;page-break-after:avoid}html body blockquote{color:#5c5c5c}html body pre{page-break-inside:avoid}html body table{display:table}html body img{display:block;max-width:100%;max-height:100%}html body pre,html body code{word-wrap:break-word;white-space:pre}}.markdown-preview{width:100%;height:100%;box-sizing:border-box}.markdown-preview .pagebreak,.markdown-preview .newpage{page-break-before:always}.markdown-preview pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}.markdown-preview pre.line-numbers>code{position:relative}.markdown-preview pre.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:1em;font-size:100%;left:0;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.markdown-preview pre.line-numbers .line-numbers-rows>span{pointer-events:none;display:block;counter-increment:linenumber}.markdown-preview pre.line-numbers .line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}.markdown-preview .mathjax-exps .MathJax_Display{text-align:center !important}.markdown-preview:not([for="preview"]) .code-chunk .btn-group{display:none}.markdown-preview:not([for="preview"]) .code-chunk .status{display:none}.markdown-preview:not([for="preview"]) .code-chunk .output-div{margin-bottom:16px}.scrollbar-style::-webkit-scrollbar{width:8px}.scrollbar-style::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}.scrollbar-style::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode]){position:relative;width:100%;height:100%;top:0;left:0;margin:0;padding:0;overflow:auto}html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{position:relative;top:0}@media screen and (min-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em calc(50% - 457px + 2em)}}@media screen and (max-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{font-size:14px !important;padding:1em}}@media print{html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{display:none}}html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{position:fixed;bottom:8px;left:8px;font-size:28px;cursor:pointer;color:inherit;z-index:99;width:32px;text-align:center;opacity:.4}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] #sidebar-toc-btn{opacity:1}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc{position:fixed;top:0;left:0;width:300px;height:100%;padding:32px 0 48px 0;font-size:14px;box-shadow:0 0 4px rgba(150,150,150,0.33);box-sizing:border-box;overflow:auto;background-color:inherit}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar{width:8px}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc a{text-decoration:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{padding:0 1.6em;margin-top:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc li{margin-bottom:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{list-style-type:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{left:300px;width:calc(100% -  300px);padding:2em calc(50% - 457px -  150px);margin:0;box-sizing:border-box}@media screen and (max-width:1274px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{width:100%}}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .markdown-preview{left:50%;transform:translateX(-50%)}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .md-sidebar-toc{display:none}
/* Please visit the URL below for more information: */
/*   https://shd101wyy.github.io/markdown-preview-enhanced/#/customize-css */

      </style>
    </head>
    <body for="html-export">
      <div class="mume markdown-preview  ">
      <h1 class="mume-header" id="rust%E6%BA%90%E7%A0%81%E7%BB%84%E7%BB%87%E7%BB%93%E6%9E%84">Rust&#x6E90;&#x7801;&#x7EC4;&#x7EC7;&#x7ED3;&#x6784;</h1>

<p><span id="toc"></span></p>
<ul>
<li><a href="#rust%E6%BA%90%E7%A0%81%E7%BB%84%E7%BB%87%E7%BB%93%E6%9E%84">Rust&#x6E90;&#x7801;&#x7EC4;&#x7EC7;&#x7ED3;&#x6784;</a>
<ul>
<li><a href="#liballoctoc">liballoc</a></li>
<li><a href="#libcoretoc">libcore</a></li>
<li><a href="#libstdtoc">libstd</a></li>
<li><a href="#%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8Btoc">&#x7F16;&#x8BD1;&#x8FC7;&#x7A0B;</a></li>
<li><a href="#librustc_apfloattoc">librustc_apfloat</a></li>
<li><a href="#librustc_arenatoc">librustc_arena</a></li>
<li><a href="#librustc_serializetoc">librustc_serialize</a></li>
<li><a href="#librustc_spantoc">librustc_span</a></li>
<li><a href="#librustc_data_structurestoc">librustc_data_structures</a></li>
<li><a href="#librustc_indextoc">librustc_index</a></li>
<li><a href="#librustc_graphviztoc">librustc_graphviz</a></li>
<li><a href="#librustc_drivertoc">librustc_driver</a></li>
<li><a href="#librustc_interfacetoc">librustc_interface</a></li>
<li><a href="#librustc_lexertoc">librustc_lexer</a></li>
<li><a href="#librustc_macrostoc">librustc_macros</a></li>
<li><a href="#librustc_asttoc">librustc_ast</a></li>
<li><a href="#librustc_ast_prettytoc">librustc_ast_pretty</a></li>
<li><a href="#librustc_ast_passestoc">librustc_ast_passes</a></li>
<li><a href="#librustc_ast_loweringtoc">librustc_ast_lowering</a></li>
<li><a href="#librustc_hirtoc">librustc_hir</a></li>
<li><a href="#librustc_middlelibrustc_mirtoc">librustc_middle/librustc_mir</a></li>
<li><a href="#librustc_codegen_ssatoc">librustc_codegen_ssa</a></li>
<li><a href="#librustc_codegen_llvmtoc">librustc_codegen_llvm</a></li>
<li><a href="#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99toc">&#x53C2;&#x8003;&#x8D44;&#x6599;</a></li>
</ul>
</li>
</ul>
<h2 class="mume-header" id="liballoctoc"><a href="#toc">liballoc</a></h2>

<p>&#x5185;&#x5B58;&#x5206;&#x914D;&#x5E93;, &#x6807;&#x51C6;&#x5E93;&#x4E2D;&#x6D89;&#x53CA;&#x5230;&#x5806;&#x5185;&#x5B58;&#x5206;&#x914D;&#x76F8;&#x5173;&#x7684;&#x4EE3;&#x7801;&#x5728;&#x6B64;;</p>
<ul>
<li>alloc: &#x5168;&#x5C40;&#x5185;&#x5B58;&#x5206;&#x914D;&#x5668;<code>Global</code>(&#x5B9E;&#x73B0;&#x4E86;<code>AllocRef</code>trait), &#x53CA;&#x5185;&#x5B58;&#x5206;&#x914D;&#x76F8;&#x5173;&#x7684;&#x51FD;&#x6570;<code>alloc/realloc/dealloc/alloc_zeroed</code>&#x7684;&#x5B9E;&#x73B0;(&#x4ED6;&#x4EEC;&#x662F;&#x5BF9;libcore&#x5E93;&#x4E2D;&#x7684;&#x5185;&#x5B58;&#x5206;&#x914D;&#x51FD;&#x6570;&#x7684;&#x5C01;&#x88C5;);</li>
<li>boxed: <code>Box</code>(&#x6307;&#x5411;&#x5806;&#x5185;&#x5B58;&#x7684;&#x667A;&#x80FD;&#x6307;&#x9488;, &#x7C7B;&#x4F3C;C++&#x4E2D;&#x7684;<code>unique_ptr</code>)&#x7684;&#x5B9E;&#x73B0;;</li>
<li>borrow: <code>ToOwned</code> trait&#x5B9E;&#x73B0;, &#x5B9E;&#x73B0;<code>ToOwned</code>&#x7684;&#x5BF9;&#x8C61;&#x53EF;&#x4EE5;&#x4ECE;&#x5B9E;&#x73B0;&#x4E86;<code>Borrow</code>&#x7684;&#x5BF9;&#x8C61;&#x4E2D;&#x62F7;&#x8D1D;&#x5185;&#x5BB9;(<code>Clone</code>trait&#x4EC5;&#x8D1F;&#x8D23;<code>T</code>&#x548C;<code>&amp;T</code>&#x7C7B;&#x578B;&#x7684;&#x5BF9;&#x8C61;&#x7684;&#x62F7;&#x8D1D;). <code>Cow</code>&#x5199;&#x65F6;&#x590D;&#x5236;(clone-on-write)&#x667A;&#x80FD;&#x6307;&#x9488;;</li>
<li>fmt: <code>format</code>&#x683C;&#x5F0F;&#x5316;&#x51FD;&#x6570;&#x7684;&#x5B9E;&#x73B0;;</li>
<li>macros: <code>vec!</code>&#x5B8F;&#x7684;&#x5B9E;&#x73B0;;</li>
<li>raw_vec: <code>RawVec</code>&#x7684;&#x5B9E;&#x73B0;(&#x6570;&#x7EC4;&#x76F8;&#x5173;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x7684;&#x5E95;&#x5C42;&#x5B9E;&#x73B0;, &#x5982;<code>Vec</code>);</li>
<li>rc: <code>Rc</code>&#x57FA;&#x4E8E;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x7684;&#x5355;&#x7EBF;&#x7A0B;&#x5B89;&#x5168;&#x7684;&#x667A;&#x80FD;&#x6307;&#x9488;&#x5B9E;&#x73B0;, &#x7C7B;&#x4F3C;&#x4E8E;C++&#x4E2D;&#x7684;<code>shared_ptr</code>. <code>Weak</code>&#x975E;&#x6240;&#x6709;&#x6743;&#x5F15;&#x7528;&#x7684;&#x667A;&#x80FD;&#x6307;&#x9488;&#x5B9E;&#x73B0; &#x7C7B;&#x4F3C;C++&#x4E2D;&#x7684;<code>weak_ptr</code>. &#x4E24;&#x8005;&#x5E95;&#x5C42;&#x662F;<code>RcBox</code>;</li>
<li>slice: <code>[T]</code>&#x5207;&#x7247;&#x7684;&#x5B9E;&#x73B0;;</li>
<li>str: <code>str</code>&#x5B57;&#x7B26;&#x4E32;&#x5207;&#x7247;&#x4F60;&#x7684;&#x5B9E;&#x73B0;;</li>
<li>String: <code>String</code>UTF-8&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x5B9E;&#x73B0;(String&#x5E95;&#x5C42;&#x662F;<code>Vec</code>);</li>
<li>sync: <code>Arc</code>&#x57FA;&#x4E8E;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x7684;&#x7EBF;&#x7A0B;&#x95F4;&#x5B89;&#x5168;&#x7684;&#x667A;&#x80FD;&#x6307;&#x9488;&#x5B9E;&#x73B0;, &#x7C7B;&#x4F3C;&#x4E8E;C++&#x4E2D;&#x7684;<code>atomic&lt;shared_ptr&gt;</code>. <code>Weak</code>&#x975E;&#x6240;&#x6709;&#x6743;&#x5F15;&#x7528;&#x7684;&#x667A;&#x80FD;&#x6307;&#x9488;&#x5B9E;&#x73B0;. &#x4E24;&#x8005;&#x5E95;&#x5C42;&#x662F;<code>ArcInner</code>;</li>
<li>task: <code>Wake</code>trait&#x5B9E;&#x73B0;;</li>
<li>vec: <code>Vec</code>&#x6570;&#x7EC4;&#x7684;&#x5B9E;&#x73B0;(&#x5E95;&#x5C42;&#x662F;<code>RawVec</code>);</li>
<li>collections: &#x96C6;&#x5408;&#x5BB9;&#x5668;&#x7684;&#x5B9E;&#x73B0;;
<ul>
<li>btree: B&#x6811;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x7684;&#x5B9E;&#x73B0;;
<ul>
<li>map: <code>BTreeMap</code>&#x57FA;&#x4E8E;B&#x6811;&#x7684;&#x952E;&#x503C;map&#x5B9E;&#x73B0;;</li>
<li>node: B&#x6811;&#x6839;&#x8282;&#x70B9;<code>Root</code>, &#x6811;&#x53F6;&#x5B50;<code>LeafNode</code>&#x7B49;&#x76F8;&#x5173;&#x7684;&#x5B9E;&#x73B0;;</li>
<li>search: &#x6839;&#x636E;&#x6307;&#x5B9A;&#x952E;&#x503C;&#x641C;&#x7D22;&#x7684;&#x76F8;&#x5173;&#x51FD;&#x6570;;</li>
<li>set: <code>BTreeSet</code>set&#x5B9E;&#x73B0;(&#x5E95;&#x5C42;&#x662F;<code>BTreeMap</code>);</li>
</ul>
</li>
<li>binary_heap: <code>BinaryHeap</code>&#x4E8C;&#x53C9;&#x5806;&#x7684;&#x5B9E;&#x73B0;(&#x5E95;&#x5C42;&#x662F;<code>Vec</code>);</li>
<li>linked_list: <code>LinkedList</code>&#x53CC;&#x5411;&#x94FE;&#x8868;&#x5B9E;&#x73B0;;</li>
<li>vec_deque: <code>VecDeque</code>&#x53CC;&#x5411;&#x961F;&#x5217;&#x5B9E;&#x73B0;(&#x5E95;&#x5C42;&#x662F;<code>RawVec</code>);</li>
</ul>
</li>
</ul>
<h2 class="mume-header" id="libcoretoc"><a href="#toc">libcore</a></h2>

<p>Rust&#x6838;&#x5FC3;&#x5E93;, Rust&#x8BED;&#x8A00;&#x7279;&#x6027;&#x76F8;&#x5173;&#x7684;&#x5B9E;&#x73B0;&#x5728;&#x6B64;&#x4E2D;;</p>
<ul>
<li>any: <code>Any</code>trait&#x5B9E;&#x73B0;;</li>
<li>ascii: <code>EscapeDefault/escape_default</code>ASCII&#x5B57;&#x7B26;&#x96C6;&#x76F8;&#x5173;&#x7684;&#x7279;&#x5316;&#x64CD;&#x4F5C;;</li>
<li>bool: <code>bool</code>&#x7C7B;&#x578B;&#x7684;&#x5B9E;&#x73B0;(&#x975E;&#x57FA;&#x7840;&#x8BED;&#x8A00;&#x5C42;&#x9762;&#x7684;&#x5B9E;&#x73B0;, &#x63D0;&#x4F9B;&#x4E00;&#x4E9B;&#x989D;&#x5916;&#x7684;&#x8F85;&#x52A9;&#x529F;&#x80FD;);</li>
<li>borrow: <code>Borrow</code>trait&#x7684;&#x5B9E;&#x73B0;, &#x6CE8;&#x610F;&#x548C;<code>AsRef</code>&#x7684;&#x533A;&#x522B;;</li>
<li>cell: <code>Cell</code>&#x5185;&#x90E8;&#x53EF;&#x53D8;&#x6027;&#x5B9E;&#x73B0;(<em>interior mutability</em>), &#x5373;&#x4E0D;&#x53EF;&#x53D8;&#x7684;&#x5B9E;&#x4F8B;&#x53EF;&#x4EE5;&#x88AB;&#x8986;&#x5199;(&#x5C4F;&#x853D;&#x7F16;&#x8BD1;&#x5668;&#x5BF9;immutable&#x5B9E;&#x4F8B;&#x4E0D;&#x53EF;&#x4FEE;&#x6539;&#x7684;&#x9650;&#x5236;, &#x8BE5;&#x8BED;&#x4E49;&#x7684;&#x5B9E;&#x73B0;&#x662F;&#x5E95;&#x5C42;&#x7684;<code>UnsafeCell</code>). <code>RefCell</code>&#x5C4F;&#x853D;&#x7F16;&#x8BD1;&#x5668;&#x7684;borrow&#x89C4;&#x5219;, &#x53EA;&#x8FDB;&#x884C;&#x52A8;&#x6001;&#x671F;&#x7684;borrow&#x89C4;&#x5219;&#x68C0;&#x67E5;, &#x5E95;&#x5C42;&#x662F;<code>UnsafeCell</code>;</li>
<li>clone: <code>Clone</code>trait&#x5B9E;&#x73B0;;</li>
<li>cmp: <code>PartialEq/PartialOrd/Eq/Ord/Ordering</code>&#x6BD4;&#x8F83;&#x76F8;&#x5173;&#x7684;trait;</li>
<li>default: <code>Default</code>trait;</li>
<li>ffi: <code>c_void</code>(&#x505A;&#x6307;&#x9488;&#x4F7F;&#x7528;&#x65F6;&#x7B49;&#x6548;&#x4E8E;c&#x7684;<code>void</code>&#x6307;&#x9488;), <code>VaList</code>(&#x7B49;&#x6548;&#x4E8E;C&#x8BED;&#x8A00;&#x4E2D;&#x7684;&#x53D8;&#x53C2;&#x53C2;&#x6570;&#x5B9E;&#x73B0;);</li>
<li>hint: &#x7528;&#x4E8E;&#x7F16;&#x8BD1;&#x5668;&#x4F18;&#x5316;&#x76F8;&#x5173;&#x7684;&#x5B9E;&#x73B0;, <code>spin_loop/unreachable_unchecked/black_box</code>;</li>
<li>internal_macros: &#x5185;&#x90E8;&#x4F7F;&#x7528;&#x7684;&#x5B8F;&#x7684;&#x5B9A;&#x4E49;, &#x4E3B;&#x8981;&#x662F;&#x4E00;&#x4E9B;&#x64CD;&#x4F5C;&#x7B26;&#x7684;&#x901A;&#x7528;&#x5B8F;. &#x56E0;&#x4E3A;Rust&#x4E2D;&#x67D0;&#x4E2A;trait&#x5B9E;&#x73B0;<em>blanket impl</em>&#x540E;, &#x5916;&#x90E8;crate&#x5C31;&#x4E0D;&#x80FD;&#x5728;&#x67D0;&#x4E2A;&#x7C7B;&#x578B;&#x4E0A;&#x5B9E;&#x73B0;&#x8BE5;trait&#x4E86;(orphan rule and overlap rule). &#x4E3A;&#x4E86;&#x4F7F;&#x5916;crate&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x6838;&#x5FC3;&#x5E93;&#x4E2D;&#x67D0;&#x4E9B;trait, &#x6240;&#x4EE5;&#x901A;&#x8FC7;&#x5B8F;&#x6765;&#x4E00;&#x6761;&#x6761;&#x7684;&#x5BF9;&#x67D0;&#x4E9B;&#x7C7B;&#x578B;&#x5B9E;&#x73B0;&#x67D0;&#x4E2A;trait, &#x5982;<code>Add</code>;</li>
<li>intrinsics: &#x66B4;&#x9732;&#x4E00;&#x4E9B;&#x57FA;&#x672C;&#x6307;&#x4EE4;&#x7684;&#x51FD;&#x6570;&#x63A5;&#x53E3;;</li>
<li>marker: &#x4E3B;&#x8981;&#x7528;&#x4E8E;&#x8BED;&#x6CD5;&#x8BED;&#x4E49;&#x7684;&#x6807;&#x8BC6;trait, &#x5982;<code>Sync/Send/PhantomData</code>&#x7B49;;</li>
<li>option: <code>Option</code>;</li>
<li>panic/panicking: panic&#x76F8;&#x5173;;</li>
<li>raw: <code>TraitObject</code>&#x52A8;&#x6001;&#x6D3E;&#x53D1;&#x5BF9;&#x8C61;;</li>
<li>result: <code>Result</code>;</li>
<li>time: <code>Duration</code>;</li>
<li>tuple: &#x5143;&#x7EC4;&#x7684;&#x67D0;&#x4E9B;trait&#x5B9E;&#x73B0;, &#x5F53;&#x524D;&#x8FD9;&#x4E9B;trait&#x5B9E;&#x73B0;&#x4E0A;&#x5143;&#x7EC4;&#x53C2;&#x6570;&#x9700;&#x5C0F;&#x4E8E;&#x7B49;&#x4E8E;12&#x4E2A;. &#x6CE8;: <code>tuple_impls</code>&#x7684;&#x5B8F;&#x5B9E;&#x73B0;&#x5F88;&#x503C;&#x5F97;&#x7528;&#x4E8E;Rust&#x5B8F;&#x5B66;&#x4E60;;</li>
<li>unit: <code>(),*</code>&#x6620;&#x5C04;&#x5230;<code>()</code>;</li>
<li>alloc: &#x5185;&#x5B58;&#x5206;&#x914D;&#x76F8;&#x5173;;
<ul>
<li>global: <code>GlobalAlloc</code>trait, &#x5185;&#x5B58;&#x5206;&#x914D;&#x5668;&#x9700;&#x5B9E;&#x73B0;&#x7684;trait;</li>
<li>layout: <code>Layout</code>&#x5185;&#x5B58;&#x5E03;&#x5C40;&#x62BD;&#x8C61;;</li>
<li><code>AllocRef/AllocInit/MemoryBlock</code>: &#x5185;&#x5B58;<strong>&#x5757;</strong>(MemmoryBlock, &#x591A;&#x4E86;&#x4E00;&#x4E2A;&#x5757;&#x5927;&#x5C0F;&#x7684;&#x57DF;, &#x56E0;&#x6B64;&#x53EF;&#x4EE5;&#x6807;&#x8BC6;0&#x5927;&#x5C0F;&#x7684;&#x5185;&#x5B58;&#x533A;&#x57DF;)&#x5206;&#x914D;&#x76F8;&#x5173;&#x63A5;&#x53E3;&#x6570;&#x636E;&#x63A5;&#x53E3;;</li>
</ul>
</li>
<li>array: &#x6570;&#x7EC4;&#x76F8;&#x5173;&#x64CD;&#x4F5C;, &#x5982;<code>PartialEq/Borrow</code>&#x7B49;(&#x5F53;&#x524D;&#x53EA;&#x652F;&#x6301;&#x957F;&#x5EA6;&#x5C0F;&#x4E8E;&#x7B49;&#x4E8E;32&#x7684;&#x6570;&#x7EC4;);</li>
<li>char: &#x5B57;&#x7B26;&#x76F8;&#x5173;;</li>
<li>convert: <code>From/TryFrom/Into/TryInto</code>&#x7B49;&#x8F6C;&#x6362;&#x76F8;&#x5173;trait(&#x6CE8;&#x610F;: &#x8FD9;&#x4E9B;&#x8F6C;&#x6362;trait&#x5E76;&#x4E0D;&#x662F;<code>as</code>&#x7684;&#x91CD;&#x8F7D;trait)&#x53CA;&#x5BF9;&#x57FA;&#x672C;&#x7C7B;&#x578B;&#x7684;&#x8FD9;&#x4E9B;traits&#x5B9E;&#x73B0;, <code>Infallible</code>&#x7528;&#x4E8E;&#x6807;&#x8BC6;&#x6C38;&#x8FDC;&#x4E0D;&#x4F1A;&#x51FA;&#x73B0;&#x7684;Error;</li>
<li>ptr: &#x5BF9;&#x88F8;&#x6307;&#x9488;&#x7684;&#x4E0D;&#x540C;&#x7528;&#x9014;&#x5C01;&#x88C5;&#x5B9E;&#x73B0;(&#x96F6;&#x5F00;&#x9500;), &#x53CA;&#x5BF9;&#x6307;&#x9488;&#x6307;&#x5411;&#x5185;&#x5B58;&#x76F8;&#x5173;&#x64CD;&#x4F5C;&#x7684;&#x51FD;&#x6570;&#x5C01;&#x88C5;;
<ul>
<li>unique: <code>Unique</code>&#x8BE5;&#x6307;&#x9488;&#x6307;&#x5411;&#x7684;&#x5B9E;&#x4F8B;&#x5E94;&#x8BE5;&#x53EA;&#x7531;&#x8BE5;<code>Unique</code>&#x6307;&#x9488;&#x4FEE;&#x6539;, &#x800C;&#x4E0D;&#x5E94;&#x8BE5;&#x901A;&#x8FC7;&#x5176;&#x5B83;&#x6307;&#x9488;&#x4FEE;&#x6539;(<code>Unique</code>&#x6307;&#x9488;&#x5FC5;&#x987B;&#x662F;&#x975E;&#x7A7A;&#x7684;). &#x6CE8;&#x610F;: <code>Unique</code>&#x5E76;&#x6CA1;&#x6709;&#x66B4;&#x9732;&#x7ED9;&#x5916;&#x90E8;crate&#x4F7F;&#x7528;;</li>
<li>non_null: <code>NonNull</code>&#x8BE5;&#x6307;&#x9488;&#x6307;&#x5411;&#x7684;&#x5B9E;&#x4F8B;&#x5FC5;&#x987B;&#x662F;&#x975E;&#x7A7A;&#x7684;;</li>
<li>mut_ptr: <code>*mut T</code>&#x6307;&#x9488;&#x76F8;&#x5173;&#x7684;&#x8F85;&#x52A9;&#x529F;&#x80FD;(&#x5982;&#x5BF9;&#x6307;&#x9488;&#x504F;&#x79FB;&#x8BA1;&#x7B97;, &#x4E0D;&#x77E5;&#x4E3A;&#x4EC0;&#x4E48;&#x504F;&#x79FB;&#x8BA1;&#x7B97;&#x4E3A;&#x4EC0;&#x4E48;&#x6CA1;&#x6709;&#x63D0;&#x4F9B;&#x8BF8;&#x5982;<code>Add&lt;usize&gt;</code>&#x7684;&#x91CD;&#x8F7D;&#x5B9E;&#x73B0;);</li>
<li>const_ptr: <code>*const T</code>&#x6307;&#x9488;&#x76F8;&#x5173;&#x7684;&#x8F85;&#x52A9;&#x529F;&#x80FD;;</li>
<li><code>drop_in_place/read/write</code>&#x7B49;&#x5185;&#x5B58;&#x64CD;&#x4F5C;&#x76F8;&#x5173;&#x51FD;&#x6570;&#x5C01;&#x88C5;;</li>
</ul>
</li>
<li>pin: <code>Pin</code>&#x6307;&#x9488;;</li>
<li>slice: &#x5207;&#x7247;&#x64CD;&#x4F5C;&#x76F8;&#x5173;&#x8F85;&#x52A9;&#x529F;&#x80FD;;
<ul>
<li>memchr: <code>memchr/memrchr</code>&#x5728;&#x5207;&#x7247;&#x4E2D;&#x67E5;&#x627E;&#x5B50;&#x7247;;</li>
<li>rotate: <code>ptr_rotate</code>&#x5207;&#x7247;&#x65CB;&#x8F6C;&#x64CD;&#x4F5C;(&#x4E3A;&#x5565;&#x8981;&#x5B9E;&#x73B0;&#x8FD9;&#x4E48;&#x590D;&#x6742;?);</li>
<li>sort: &#x63D2;&#x5165;&#x6392;&#x5E8F;, &#x5806;&#x6392;&#x5E8F;, pattern-defeating&#x5FEB;&#x6392;&#x5B9E;&#x73B0;;</li>
</ul>
</li>
<li>unicode: Unicode&#x7F16;&#x89E3;&#x7801;&#x76F8;&#x5173;;</li>
<li>task: &#x5F02;&#x6B65;&#x4EFB;&#x52A1;&#x76F8;&#x5173;;
<ul>
<li>wake: <code>RawWaker/RawWakerVTable</code>&#x5F02;&#x6B65;&#x4EFB;&#x52A1;&#x5524;&#x9192;&#x884C;&#x4E3A;&#x7EA6;&#x5B9A;, <code>Context</code>&#x5F02;&#x6B65;&#x4EFB;&#x52A1;&#x7684;&#x4E0A;&#x4E0B;&#x6587;&#x63CF;&#x8FF0;;</li>
<li>poll: <code>Pool</code>&#x5F02;&#x6B65;&#x4EFB;&#x52A1;&#x72B6;&#x6001;;</li>
</ul>
</li>
<li>sync: &#x540C;&#x6B65;&#x76F8;&#x5173;;
<ul>
<li>atomic: &#x539F;&#x5B50;&#x7C7B;&#x578B;&#x548C;&#x5185;&#x5B58;&#x987A;&#x5E8F;&#x76F8;&#x5173;;</li>
</ul>
</li>
<li>str: &#x5B57;&#x7B26;&#x4E32;&#x5207;&#x7247;&#x76F8;&#x5173;(&#x8FED;&#x4EE3;&#x5668;/&#x6709;&#x635F;UTF-8&#x5B57;&#x7B26;&#x4E32;/&#x6A21;&#x5F0F;&#x5339;&#x914D;);</li>
<li>arith: &#x7B97;&#x672F;&#x64CD;&#x4F5C;&#x7B26;&#x91CD;&#x8F7D;trait<code>Add/Sub/Mul/Div/Rem/BitAnd/BitOr/BitXor/Shl/Shr</code>, &#x53CA;&#x8BF8;&#x5982;<code>+=</code>&#x5F62;&#x5F0F;&#x64CD;&#x4F5C;&#x7B26;&#x7684;&#x91CD;&#x8F7D;trait<code>AddAssign/...</code>;</li>
<li>bit: &#x4E00;&#x5143;&#x64CD;&#x4F5C;&#x7B26;&#x91CD;&#x8F7D;trait<code>Not/Neg</code>;</li>
<li>deref: &#x89E3;&#x5F15;&#x7528;&#x91CD;&#x8F7D;trait<code>Deref/DerefMut</code>;</li>
<li>drop: &#x5B9E;&#x4F8B;&#x5BF9;&#x8C61;&#x7684;&#x6790;&#x6784;trait<code>Drop</code>;</li>
<li>function: &#x51FD;&#x6570;&#x8C03;&#x7528;trait<code>FnMut/Fn/FnOnce</code>;</li>
<li>generator: &#x5F02;&#x6B65;&#x751F;&#x6210;&#x5668;trait<code>Generator</code>;</li>
<li>index: &#x7D22;&#x5F15;&#x91CD;&#x8F7D;trait<code>Index/IndexMut</code>;</li>
<li>range: <code>Range/RangeFrom/RangeTo/RangeFull/RangeInclusive/RangeToInclusive</code>;</li>
<li>try: <code>?</code>&#x91CD;&#x8F7D;trait<code>Try</code>;</li>
<li>unsize: &#x52A8;&#x6001;&#x6D3E;&#x53D1;&#x6807;&#x8BC6;<code>DispatchFromDyn</code>, <code>CoerceUnsied</code>&#x6807;&#x8BC6;&#x53EF;&#x4EE5;&#x5728;&#x6307;&#x9488;&#x4E0A;&#x5B8C;&#x6210;unsize(&#x7F16;&#x8BD1;&#x5668;&#x4E0D;&#x77E5;&#x9053;&#x6307;&#x5411;&#x5185;&#x5BB9;&#x5177;&#x4F53;&#x5927;&#x5C0F;)&#x7684;&#x64CD;&#x4F5C;;</li>
<li>num: &#x4E00;&#x4E9B;&#x5E38;&#x7528;&#x57FA;&#x672C;&#x6570;&#x636E;&#x7C7B;&#x578B;&#x7684;&#x7B97;&#x672F;&#x5E38;&#x91CF;&#x5B9A;&#x4E49;;</li>
<li>macros: &#x66B4;&#x6F0F;&#x7ED9;&#x5916;&#x90E8;crate&#x4F7F;&#x7528;&#x7684;&#x8BF8;&#x5982;<code>panic!/matches/format_args!</code>&#x7B49;&#x7684;&#x5B8F;&#x5B9A;&#x4E49;;</li>
<li>mem: &#x5185;&#x5B58;&#x64CD;&#x4F5C;&#x76F8;&#x5173;;
<ul>
<li>manually_drop: <code>ManuallyDrop</code>&#x6807;&#x8BC6;&#x624B;&#x52A8;&#x6790;&#x6784;drop&#x7684;&#x5BF9;&#x8C61;(&#x7981;&#x6B62;&#x7F16;&#x8BD1;&#x5668;&#x81EA;&#x52A8;drop);</li>
<li>maybe_uninit: <code>MaybeUninit</code>&#x7528;&#x4E8E;&#x6807;&#x8BC6;&#x53EF;&#x80FD;&#x672A;&#x521D;&#x59CB;&#x5316;&#x5BF9;&#x8C61;;</li>
<li><code>drop/forget/replace/transmute/discriminant</code>&#x7B49;&#x5BF9;&#x8C61;&#x5B9E;&#x4F8B;&#x5185;&#x5B58;&#x64CD;&#x4F5C;&#x51FD;&#x6570;, <code>Discriminant</code>&#x7528;&#x4E8E;&#x679A;&#x4E3E;&#x5B9E;&#x4F8B;&#x7C7B;&#x578B;&#x7684;&#x5224;&#x5B9A;;</li>
</ul>
</li>
<li>iter: &#x8FED;&#x4EE3;&#x5668;&#x8BED;&#x4E49;&#x5B9E;&#x73B0;;
<ul>
<li>&#x8FED;&#x4EE3;&#x5668;&#x534F;&#x8BAE;trait<code>Iterator</code>, &#x5176;&#x5B83;&#x5E38;&#x7528;&#x7684;&#x8FED;&#x4EE3;&#x64CD;&#x4F5C;&#x7684;&#x8FED;&#x4EE3;&#x5668;&#x7C7B;&#x578B;, &#x5982;<code>reverse-&gt;Rev/filter-&gt;Filter</code>&#x7B49;;</li>
</ul>
</li>
<li>hash: &#x901A;&#x7528;hash&#x63A5;&#x53E3;&#x5B9A;&#x4E49;;
<ul>
<li><code>Hash</code>&#x8868;&#x793A;&#x5B9E;&#x73B0;&#x8BE5;trait&#x7684;&#x7C7B;&#x578B;, &#x53EF;&#x4EE5;&#x63A5;&#x6536;&#x54C8;&#x5E0C;&#x5668;&#x5B8C;&#x6210;hash&#x8FD0;&#x7B97;;</li>
<li><code>Hasher</code>trait&#x7EA6;&#x5B9A;&#x54C8;&#x5E0C;&#x5668;&#x7684;&#x63A5;&#x53E3;&#x5B9E;&#x73B0;;</li>
<li><code>BuildHasher</code>&#x7EA6;&#x5B9A;&#x54C8;&#x5E0C;&#x5668;&#x7684;&#x5B9E;&#x4F8B;&#x7684;&#x521B;&#x5EFA;&#x63A5;&#x53E3;;</li>
<li>sip: <code>SipHasher13</code><a href="https://131002.net/siphash/">siphash</a>&#x7B97;&#x6CD5;&#x5B9E;&#x73B0;(&#x867D;&#x7136;deprecated&#x72B6;&#x6001;, &#x4F46;&#x8FD8;&#x662F;&#x5F53;&#x524D;&#x5185;&#x90E8;&#x4F7F;&#x7528;&#x7684;&#x9ED8;&#x8BA4;&#x7684;&#x54C8;&#x5E0C;&#x5668;);</li>
</ul>
</li>
<li>future: &#x5F02;&#x6B65;&#x8BED;&#x4E49;&#x5B9E;&#x73B0;;
<ul>
<li><code>Future</code>&#x5F02;&#x6B65;&#x8BA1;&#x7B97;&#x63A5;&#x53E3;&#x7EA6;&#x5B9A;trait;</li>
</ul>
</li>
<li>fmt: &#x5B57;&#x7B26;&#x4E32;&#x683C;&#x5F0F;&#x5316;&#x76F8;&#x5173;;
<ul>
<li><code>Binary/Debug/Octal</code>&#x7B49;&#x7EA6;&#x5B9A;&#x4E0D;&#x540C;&#x683C;&#x5F0F;&#x5316;&#x8BF4;&#x660E;&#x7B26;&#x65F6;&#x7684;&#x8F93;&#x51FA;&#x884C;&#x4E3A;;</li>
<li>float: &#x6D6E;&#x70B9;&#x6570;&#x7684;&#x683C;&#x5F0F;&#x5316;&#x8F93;&#x51FA;&#x5B9E;&#x73B0;;</li>
<li>num: &#x6574;&#x6570;&#x7684;&#x683C;&#x5F0F;&#x5316;&#x8F93;&#x51FA;&#x5B9E;&#x73B0;;</li>
<li>rt/v1: &#x683C;&#x5F0F;&#x5316;&#x8F93;&#x51FA;&#x7684;&#x7EC6;&#x8282;&#x5B9A;&#x4E49;, &#x5982;&#x5BF9;&#x9F50;/&#x586B;&#x5145;&#x7B49;&#x7B49;;</li>
</ul>
</li>
</ul>
<h2 class="mume-header" id="libstdtoc"><a href="#toc">libstd</a></h2>

<p>libstd&#x66B4;&#x9732;&#x7684;&#x63A5;&#x53E3;&#x662F;&#x5BF9;&#x4E00;&#x4E9B;&#x901A;&#x7528;&#x529F;&#x80FD;&#x7684;&#x62BD;&#x8C61;, &#x4F46;&#x662F;&#x8FD9;&#x4E9B;&#x529F;&#x80FD;&#x7684;&#x7EC6;&#x8282;&#x5B9E;&#x73B0;&#x901A;&#x5E38;&#x4F9D;&#x8D56;&#x4E8E;&#x5177;&#x4F53;&#x7684;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;. &#x672C;&#x8282;&#x4EC5;&#x63CF;&#x8FF0;&#x5728;libstd&#x4E2D;&#x5B9A;&#x4E49;&#x5B9E;&#x73B0;&#x7684;(&#x975E;&#x4ECE;<code>libcore/liballoc</code>&#x4E2D;&#x5BFC;&#x5165;&#x5230;&#x8BE5;libstd&#x7684;&#x529F;&#x80FD;)&#x529F;&#x80FD;&#x63A5;&#x53E3;, &#x5BF9;&#x4E8E;&#x5177;&#x4F53;&#x7684;&#x7EC6;&#x8282;&#x5B9E;&#x73B0;&#x5728;&#x540E;&#x7EED;&#x7684;&#x6E90;&#x7801;&#x9605;&#x8BFB;&#x4E2D;;</p>
<ul>
<li>alloc: <code>System</code>&#x7531;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x63D0;&#x4F9B;&#x7684;&#x9ED8;&#x8BA4;&#x5185;&#x5B58;&#x5206;&#x914D;&#x5668;, &#x5B9E;&#x73B0;&#x4E86;<code>AllocRef/GlobalAlloc</code>trait;</li>
<li>backtrace: <code>Backtrace/BacktraceStatus</code>&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7EBF;&#x7A0B;&#x5F02;&#x5E38;&#x4FE1;&#x606F;&#x6355;&#x83B7;(&#x5E95;&#x5C42;<code>Frame</code>&#x662F;&#x5BF9;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7EBF;&#x7A0B;&#x6808;&#x5E27;&#x4FE1;&#x606F;&#x7684;&#x5C01;&#x88C5;);</li>
<li>env: <code>Arg/ArgOs</code>&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x542F;&#x52A8;&#x65F6;&#x4F20;&#x5165;&#x7684;&#x547D;&#x4EE4;&#x884C;&#x53C2;&#x6570;&#x8FED;&#x4EE3;&#x5668;, <code>Var/VarOs</code>&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x5F53;&#x524D;&#x7684;&#x73AF;&#x5883;&#x53D8;&#x91CF;&#x8FED;&#x4EE3;&#x5668;, <code>SplitPaths</code>&#x73AF;&#x5883;&#x53D8;&#x91CF;<code>PATH</code>&#x8FED;&#x4EE3;&#x5668;;</li>
<li>sync, ffi,io,net,thread, time, error, f32,f64,fs,path,process: &#x89C1;&#x6807;&#x51C6;&#x5E93;&#x6587;&#x6863;&#x63CF;&#x8FF0;;</li>
<li>rt: rust&#x8FD0;&#x884C;&#x65F6;, &#x63D0;&#x4F9B;&#x5168;&#x5C40;&#x5806;/&#x5F02;&#x5E38;&#x5904;&#x7406;&#x7B49;;</li>
<li>HashMap: <code>HashMap</code>&#x5E95;&#x5C42;&#x4F7F;&#x7528;&#x7684;<code>hashbrown</code>&#x5E93;&#x4E2D;&#x7684;HashMap(&#x5E95;&#x5C42;&#x5B9E;&#x73B0;&#x662F;SwissTable&#x7B97;&#x6CD5;), &#x54C8;&#x5E0C;&#x5668;&#x91C7;&#x7528;&#x7684;&#x662F;<code>SipHasher13</code>;</li>
<li>HashSet: <code>HashSet</code>&#x7531;<code>HashMap</code>&#x5B9E;&#x73B0;;</li>
<li>os: &#x548C;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x76F8;&#x5173;&#x7684;&#x7279;&#x5B9A;&#x529F;&#x80FD;;
<ul>
<li>raw: C&#x8BED;&#x8A00;&#x57FA;&#x672C;&#x6570;&#x636E;&#x7C7B;&#x578B;&#x5230;Rust&#x57FA;&#x672C;&#x6811;&#x7C7B;&#x578B;&#x7684;&#x6620;&#x5C04;(<code>c_float-&gt;f32/c_int-&gt;i32</code>&#x7B49;&#x7B49;). &#x6CE8;&#x610F;<code>c_void</code>&#x5728;libcore::ffi&#x4E2D;&#x5B9A;&#x4E49;&#x4E86;;</li>
<li>linux:
<ul>
<li>fs: <code>MetadataExt</code>trait&#x7279;&#x5B9A;&#x5E73;&#x53F0;&#x4E0B;&#x7684;&#x6587;&#x4EF6;&#x5143;&#x6570;&#x636E;&#x6269;&#x5C55;&#x4FE1;&#x606F;;</li>
<li>raw: Linux&#x5E73;&#x53F0;&#x4E0B;&#x4E0D;&#x540C;&#x5904;&#x7406;&#x5668;&#x67B6;&#x6784;&#x4E0A;&#x7684;&#x4E00;&#x4E9B;&#x6570;&#x636E;&#x7C7B;&#x578B;&#x5230;Rust&#x7C7B;&#x578B;&#x7684;&#x6620;&#x5C04;(&#x5982;x86_64&#x67B6;&#x6784;&#x4E2D;Linux&#x7CFB;&#x7EDF;&#x4E0B;<code>time_t-&gt;i64/off_t-&gt;u64/stat</code>&#x7B49;&#x7B49;);</li>
</ul>
</li>
<li>redox,vxworks&#x7B49;&#x7B49;&#x7CFB;&#x7EDF;&#x6027;&#x7C7B;&#x4F3C;, &#x4E0D;&#x5728;&#x8D58;&#x8FF0;.;</li>
</ul>
</li>
<li>sys: &#x8BE5;&#x6A21;&#x5757;&#x5C01;&#x88C5;&#x4E86;&#x4E00;&#x4E9B;&#x548C;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x5177;&#x4F53;&#x5B9E;&#x73B0;&#x76F8;&#x5173;&#x7684;&#x529F;&#x80FD;, &#x4EE5;&#x5BF9;&#x5916;&#x63D0;&#x4F9B;&#x4E00;&#x81F4;&#x7684;&#x62BD;&#x8C61;&#x63A5;&#x53E3;;
<ul>
<li>windows: Windows&#x5E73;&#x53F0;&#x4E0B;&#x7684;&#x7CFB;&#x7EDF;&#x529F;&#x80FD;;
<ul>
<li>c:
<ul>
<li>windows&#x7CFB;&#x7EDF;&#x4E2D;&#x7684;&#x4E00;&#x4E9B;&#x57FA;&#x672C;&#x6570;&#x636E;&#x7C7B;&#x578B;&#x5230;Rust&#x6570;&#x636E;&#x7C7B;&#x578B;&#x7684;&#x6620;&#x5C04;(&#x5982;<code>BYTE-&gt;u8/ULONG_PTR-&gt;usize/LPVOID-&gt;*mut c_void</code>&#x7B49;&#x7B49;), &#x5B9A;&#x4E49;&#x7684;C&#x57FA;&#x672C;&#x7C7B;&#x578B;&#x4ECE;<code>crate::os::raw</code>&#x6A21;&#x5757;&#x5BFC;&#x5165;. &#x4EE5;&#x53CA;&#x5B9A;&#x4E49;&#x4E86;&#x548C;Windows&#x4E0B;&#x7B49;&#x4EF7;&#x7684;&#x7B26;&#x5408;&#x6570;&#x636E;&#x7C7B;&#x578B;(&#x5982;<code>in_addr/in6_addr/fd_set/STARTUPINFO</code>&#x7B49;&#x7B49;). &#x6B64;&#x5916;, &#x8FD8;&#x5BFC;&#x5165;&#x4E86;&#x5B9E;&#x73B0;&#x6807;&#x51C6;&#x5E93;&#x6240;&#x9700;&#x7684;&#x7EBF;&#x7A0B;/&#x7F51;&#x7EDC;/io/&#x540C;&#x6B65;&#x76F8;&#x5173;&#x7684;&#x7CFB;&#x7EDF;&#x51FD;&#x6570;;</li>
</ul>
</li>
<li>time:
<ul>
<li><code>InstantTime</code>: &#x4F7F;&#x7528;<code>QueryPerformanceCounter</code>&#x7CBE;&#x786E;&#x83B7;&#x53D6;&#x65F6;&#x95F4;;</li>
<li><code>SystemTime</code>: &#x4F7F;&#x7528;<code>GetSystemTimePreciseAsFileTime</code>&#x7CBE;&#x786E;&#x83B7;&#x53D6;&#x7CFB;&#x7EDF;&#x65F6;&#x95F4;;</li>
</ul>
</li>
<li>alloc:
<ul>
<li><code>System</code>: &#x6807;&#x51C6;&#x5E93;&#x7684;&#x9ED8;&#x8BA4;&#x5185;&#x5B58;&#x5206;&#x914D;&#x5668;&#x7684;&#x4F7F;&#x7528;<code>HeapAlloc/GetProcessHeap</code>&#x5206;&#x914D;&#x5806;&#x5185;&#x5B58;;</li>
</ul>
</li>
<li>args:
<ul>
<li><code>args</code>: &#x6807;&#x51C6;&#x5E93;&#x4E2D;&#x7684;<code>args()/args_os()</code>&#x7684;&#x5E95;&#x5C42;&#x90FD;&#x662F;&#x8C03;&#x7528;&#x8BE5;&#x51FD;&#x6570;, &#x5176;&#x8C03;&#x7528;&#x7CFB;&#x7EDF;&#x51FD;&#x6570;<code>GetCommandLineW</code>&#x83B7;&#x53D6;app&#x7684;&#x547D;&#x4EE4;&#x884C;&#x8F93;&#x5165;&#x53C2;&#x6570;;</li>
</ul>
</li>
<li>cmath: &#x6570;&#x5B66;&#x51FD;&#x6570;&#x5E95;&#x5C42;&#x8C03;&#x7528;;</li>
<li>compat: win7&#x548C;xp&#x7684;&#x517C;&#x5BB9;&#x5C42;(<code>GetProcAddress</code>);</li>
<li>condvar: &#x6807;&#x51C6;&#x5E93;CondVar&#x5E95;&#x5C42;&#x5B9E;&#x73B0;<code>SleepConditionVariableSRW/WakeConditionVariable/WakeAllConditionVariable</code>;</li>
<li>env: &#x548C;&#x7279;&#x5B9A;&#x7CFB;&#x7EDF;&#x76F8;&#x5173;&#x7684;&#x5E38;&#x91CF;;</li>
<li>fs: &#x4E3B;&#x8981;&#x51FD;&#x6570;: <code>FindNextFileW/FindClose/CreateFileW/FlushFileBuffers/SetFileInformationByHandle/GetFileInformationByHandle/GetFileInformationByHandleEx/SetFilePointerEx/CreateDirectoryW/CreateSymbolicLinkW/CreateHardLinkW/SetFileAttributesW/GetFinalPathNameByHandleW/CopyFileExW/DeviceIoControl</code>, &#x4E3B;&#x8981;&#x6570;&#x636E;&#x7ED3;&#x6784;: <code>REPARSE_MOUNTPOINT_DATA_BUFFER/WIN32_FIND_DATAW/BY_HANDLE_FILE_INFORMATION/FILE_BASIC_INFO</code>;</li>
<li>handle: <code>Handle</code>&#x6587;&#x4EF6;/&#x7EBF;&#x7A0B;&#x7684;&#x53E5;&#x67C4;, &#x4E3B;&#x8981;&#x8C03;&#x7528;&#x7CFB;&#x7EDF;&#x51FD;&#x6570;<code>CreateEventW/ReadFile/WriteFile</code>;</li>
<li>mutex: &#x6807;&#x51C6;&#x5E93;&#x4E92;&#x65A5;&#x9501;<code>Mutex</code>&#x7684;&#x5E95;&#x5C42;<code>AcquireSRWLockExclusive/TryAcquireSRWLockExclusive/ReleaseSRWLockExclusive/SRWLOCK</code>, <code>ReentrantMutex</code>&#x9012;&#x5F52;&#x9501;&#x5E95;&#x5C42;<code>InitializeCriticalSection/EnterCriticalSection/TryEnterCriticalSection/LeaveCriticalSection/DeleteCriticalSection/SRWLOCK</code>;</li>
<li>net: &#x7F51;&#x7EDC;&#x5E93;&#x5E95;&#x5C42;&#x5B9E;&#x73B0;<code>WSAStartup/WSACleanup/WSASocketW/WSARecv/WSASend</code>;</li>
<li>rand: &#x968F;&#x673A;&#x6570;&#x751F;&#x6210;&#x5E95;&#x5C42;&#x5B9E;&#x73B0;<code>RtlGenRandom/BCryptGenRandom</code>;</li>
<li>rwlock: &#x8BFB;&#x5199;&#x9501;<code>AcquireSRWLockShared/TryAcquireSRWLockShared/AcquireSRWLockExclusive/TryAcquireSRWLockExclusive/ReleaseSRWLockShared/ReleaseSRWLockExclusive</code>;</li>
<li>thread: <code>CreateThread/WaitForSingleObject/SwitchToThread</code>;</li>
</ul>
</li>
<li>unix: &#x7C7B;unix&#x5E73;&#x53F0;&#x4E0B;&#x5C31;&#x5F88;&#x719F;&#x6089;&#x4E86;, &#x57FA;&#x672C;&#x8C03;&#x7528;&#x7684;&#x90FD;&#x662F;POSIX&#x63A5;&#x53E3;, &#x4E0D;&#x518D;&#x8D58;&#x8FF0;;</li>
</ul>
</li>
<li>sys_common: &#x62BD;&#x8C61;&#x51FA;&#x6765;&#x7684;&#x548C;&#x5E73;&#x53F0;&#x65E0;&#x5173;&#x7684;&#x516C;&#x5171;&#x63A5;&#x53E3;, &#x5728;sys&#x4E0A;&#x9762;&#x5C01;&#x88C5;&#x7684;&#x4E00;&#x5C42;, &#x4E0D;&#x518D;&#x8D58;&#x8FF0;;</li>
</ul>
<h2 class="mume-header" id="%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8Btoc"><a href="#toc">&#x7F16;&#x8BD1;&#x8FC7;&#x7A0B;</a></h2>

<div class="mermaid">graph TD;
  RustSource --&gt;|Parsing and Desugaring| HIR
  HIR --&gt;|Type checking| MIR
  MIR --&gt;|Borrow checking and Optimization| LLVM_IR
  LLVM_IR --&gt;|Optimization| MachineCode
</div><h2 class="mume-header" id="librustc_apfloattoc"><a href="#toc">librustc_apfloat</a></h2>

<p>&#x4EFB;&#x610F;&#x7CBE;&#x5EA6;&#x6D6E;&#x70B9;&#x6570;, IEEE&#x6D6E;&#x70B9;&#x6570;&#x8BED;&#x4E49;&#x62BD;&#x8C61;, &#x5B9E;&#x9645;&#x6700;&#x591A;&#x652F;&#x6301;128&#x4F4D;&#x7684;&#x603B;&#x4F4D;&#x957F;;</p>
<ul>
<li>ieee: ieee&#x6D6E;&#x70B9;&#x6570;&#x8BED;&#x4E49;&#x62BD;&#x8C61;;
<ul>
<li><code>Half/Single/Double/Quad/X87DoubleExtended</code>: &#x5BF9;&#x5E94;16/5, 32/8, 64/11, 128/15, 80/15&#x6D6E;&#x70B9;&#x6570;(&#x603B;&#x4F4D;&#x957F;/&#x6307;&#x6570;&#x4F4D;&#x957F;);</li>
</ul>
</li>
<li>ppc: PowerPC&#x5E73;&#x53F0;&#x4E0B;&#x7684;&#x6D6E;&#x70B9;&#x8BED;&#x4E49;&#x5B9E;&#x73B0;;
<ul>
<li><code>DoubleDouble</code>: 64/11;</li>
</ul>
</li>
</ul>
<h2 class="mume-header" id="librustc_arenatoc"><a href="#toc">librustc_arena</a></h2>

<p>Arena&#x5185;&#x5B58;&#x5206;&#x914D;&#x5668;, <code>TypedArena</code>&#x5206;&#x914D;&#x53EA;&#x80FD;&#x5B58;&#x50A8;&#x67D0;&#x4E2A;&#x7C7B;&#x578B;&#x7684;&#x5185;&#x5B58;. <code>Arena</code>&#x5206;&#x914D;&#x53EF;&#x4EE5;&#x5B58;&#x50A8;&#x4EFB;&#x610F;&#x7C7B;&#x578B;&#x7684;&#x5185;&#x5B58;, &#x9700;&#x8981;&#x8C03;&#x7528;&#x8005;&#x624B;&#x52A8;&#x7BA1;&#x7406;&#x5185;&#x5B58;;</p>
<h2 class="mume-header" id="librustc_serializetoc"><a href="#toc">librustc_serialize</a></h2>

<ul>
<li>serialize: <code>Encoder/Decoder/Decodable/Encodable</code>trait&#x5E8F;&#x5217;&#x5316;/&#x5206;&#x5E8F;&#x5217;&#x5316;&#x534F;&#x8BAE;;</li>
<li>json: <code>Json</code>;</li>
</ul>
<h2 class="mume-header" id="librustc_spantoc"><a href="#toc">librustc_span</a></h2>

<p>&#x6E90;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x548C;&#x76F8;&#x5173;&#x5E2E;&#x52A9;&#x51FD;&#x6570;, &#x51E0;&#x4E2A;&#x5173;&#x952E;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x5982;&#x4E0B;:</p>
<ul>
<li>
<p><code>SourceFile</code>&#x6E90;&#x6587;&#x4EF6;&#x76F8;&#x5173;&#x4FE1;&#x606F;&#x7684;&#x63CF;&#x8FF0;, &#x5982;: &#x6E90;&#x6587;&#x4EF6;&#x6240;&#x5728;&#x7684;crate, &#x6240;&#x4F7F;&#x7528;&#x7684;&#x5916;&#x90E8;crate, &#x6E90;&#x4EE3;&#x7801;, &#x6587;&#x4EF6;&#x540D;&#x7B49;&#x7B49;;</p>
</li>
<li>
<p><code>Span/SpanData</code>: &#x8868;&#x793A;&#x4EE3;&#x7801;&#x7247;&#x6BB5;&#x7684;&#x4F4D;&#x7F6E;;</p>
</li>
<li>
<p><code>SourceMapFiles/SourceMap</code>: &#x6E90;&#x6587;&#x4EF6;&#x96C6;, &#x6587;&#x4EF6;&#x52A0;&#x8F7D;&#x5668;&#x7B49;&#x7B49;;</p>
</li>
<li>
<p><code>Symbol</code>: &#x5185;&#x90E8;&#x4F7F;&#x7528;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#x7F13;&#x5B58;;</p>
</li>
<li>
<p><code>kw</code>: &#x5173;&#x952E;&#x5B57;Symbol;</p>
</li>
<li>
<p><code>Ident</code>: &#x6807;&#x8BC6;&#x7B26;Symbol;</p>
</li>
<li>
<p>caching_source_map_view:</p>
</li>
</ul>
<h2 class="mume-header" id="librustc_data_structurestoc"><a href="#toc">librustc_data_structures</a></h2>

<ul>
<li>atomic_ref: <code>AtomicRef</code>&#x539F;&#x5B50;&#x5F15;&#x7528;;</li>
<li>base_n: <code>push_str/encode</code>&#x5C06;&#x65E0;&#x7B26;&#x53F7;&#x6574;&#x6570;&#x8F6C;&#x4E3A;base_64&#x5B57;&#x7B26;&#x4E32;(&#x8FD9;&#x91CC;&#x7684;BASE_64&#x7F16;&#x7801;&#x96C6;&#x662F;&#x8BE5;crate&#x81EA;&#x5B9A;&#x4E49;&#x7684;, &#x975E;&#x5E38;&#x7528;&#x7684;BASE_STD/BASE_URL&#x7F16;&#x7801;&#x96C6;);</li>
<li>box_region: <code>PinnedGenerator</code>&#x5904;&#x7406;&#x81EA;&#x5F15;&#x7528;&#x6570;&#x636E;;</li>
<li>captures: <code>Capture</code>trait&#x7528;&#x4E8E;&#x6807;&#x8BC6;&#x9700;&#x8981;&#x6355;&#x83B7;&#x7684;&#x5BF9;&#x8C61;&#x7684;&#x751F;&#x547D;&#x5468;&#x671F;;</li>
<li>const_cstr: <code>const_str!</code>&#x7ED9;&#x5B57;&#x7B26;&#x4E32;&#x52A0;&#x4E0A;<code>\0</code>C&#x5B57;&#x7B26;&#x4E32;&#x7EC8;&#x6B62;&#x7B26;;</li>
<li>fingerprint: <code>Fingerprint</code>&#x54C8;&#x5E0C;&#x6307;&#x7EB9;;</li>
<li>flock: <code>Lock</code>&#x6587;&#x4EF6;&#x9501;;</li>
<li>frozen: <code>Frozen</code>&#x5BF9;&#x8C61;&#x4E0D;&#x53EF;&#x88AB;&#x4FEE;&#x6539;;</li>
<li>map_in_place: <code>MapInPlace</code>trait, Vec&#x5B9E;&#x73B0;&#x4E86;&#x8BE5;trait(T-&gt;U, &#x53BB;&#x6389;&#x4E86;&#x4E00;&#x4E9B;&#x5B89;&#x5168;&#x6027;&#x68C0;&#x67E5;);</li>
<li>profiling: &#x7F16;&#x8BD1;&#x5668;self-profiling;</li>
<li>sip128: <code>SipHasher128</code>128&#x4F4D;SIP&#x54C8;&#x5E0C;&#x5668;;</li>
<li>small_c_str: <code>SmallCStr</code>&#x77ED;C&#x5B57;&#x7B26;&#x4E32;, &#x5C0F;&#x4E8E;37&#x4E2A;&#x5B57;&#x7B26;&#x7684;&#x5728;&#x6808;&#x4E0A;, &#x5426;&#x5219;&#x5728;&#x5806;&#x4E0A;;</li>
<li>sorted_map: <code>SortedMap</code>Map&#x6570;&#x636E;&#x7ED3;&#x6784;, &#x5E95;&#x5C42;&#x5B9E;&#x73B0;<code>Vec&lt;(K,V)&gt;</code>, &#x589E;&#x5220;&#x67E5;&#x65F6;&#x95F4;&#x590D;&#x6742;&#x5EA6;O(log(n)). <code>SortedIndexMultiMap</code>;</li>
<li>stable_hasher: <code>StableHasher</code>&#x5305;&#x88C5;&#x5668;, &#x5BF9;&#x5916;&#x63D0;&#x4F9B;&#x4E00;&#x4E2A;&#x7A33;&#x5B9A;&#x7684;&#x54C8;&#x5E0C;&#x5668;&#x63A5;&#x53E3;(&#x5F53;&#x524D;&#x662F;&#x5BF9;<code>SipHasher128</code>&#x7684;&#x5C01;&#x88C5;);</li>
<li>stable_map: <code>StableMap</code>&#x5BF9;&#x5916;&#x63D0;&#x4F9B;&#x4E00;&#x4E2A;&#x7A33;&#x5B9A;&#x7684;HashMap&#x63A5;&#x53E3;(&#x5F53;&#x524D;&#x662F;&#x5BF9;<code>FxHashMap</code>&#x7684;&#x5C01;&#x88C5;);</li>
<li>stable_set: <code>StableSet</code>&#x5BF9;&#x5916;&#x63D0;&#x4F9B;&#x4E00;&#x4E2A;&#x7A33;&#x5B9A;&#x7684;HashSet&#x63A5;&#x53E3;(&#x5F53;&#x524D;&#x662F;&#x5BF9;<code>FxHashSet</code>&#x7684;&#x5C01;&#x88C5;);</li>
<li>stack: &#x5B9A;&#x4E49;&#x4E86;&#x4E00;&#x4E9B;&#x6808;&#x76F8;&#x5173;&#x7684;&#x5E38;&#x91CF;, &#x6808;&#x6700;&#x5C0F;&#x5927;&#x5C0F;100KB, &#x9012;&#x5F52;&#x6808;&#x5927;&#x5C0F;&#x6309;&#x6307;&#x6570;&#x589E;&#x957F;(2^n * 1MB);</li>
<li>svh: <code>Svh</code>&#x54C8;&#x5E0C;&#x503C;, &#x7528;&#x4E8E;&#x589E;&#x91CF;&#x7F16;&#x8BD1;&#x6BD4;&#x8F83;crate&#x7F16;&#x8BD1;&#x7684;&#x6E90;&#x662F;&#x5426;&#x76F8;&#x540C;;</li>
<li>sync: <code>Lrc/Lock/RwLock/MTLock/MtRef</code>&#x4E00;&#x4E9B;&#x9501;&#x5C01;&#x88C5;, &#x914D;&#x7F6E;&#x4E86;parallel_compiler&#x5219;&#x662F;&#x4F7F;&#x7528;parking_lot&#x4E2D;&#x7684;&#x9501;, &#x5426;&#x5219;&#x4F7F;&#x7528;&#x7684;&#x662F;std::cell&#x4E2D;&#x7684;&#x76F8;&#x5173;&#x5BB9;&#x5668;;</li>
<li>thin_vec: <code>ThinVec</code>&#x5E95;&#x5C42;&#x662F;<code>Option&lt;Box&lt;Vec&lt;T&gt;&gt;&gt;</code>, 0&#x5927;&#x5C0F;&#x7684;&#x6570;&#x7EC4;&#x4E0D;&#x5206;&#x914D;&#x5806;&#x5185;&#x5B58;;</li>
<li>tiny_list: <code>TinyList</code>&#x5E95;&#x5C42;&#x662F;<code>Option&lt;Element&lt;T&gt;&gt;</code>, 1&#x4E2A;&#x5143;&#x7D20;&#x7684;&#x94FE;&#x8868;&#x4E0D;&#x5206;&#x914D;&#x5806;&#x5185;&#x5B58;;</li>
<li>transitive_relation: <code>TransitiveRelation</code>&#x4F20;&#x9012;&#x5173;&#x7CFB;;</li>
<li>work_queue: <code>WorkQueue</code>&#x5E95;&#x5C42;<code>VecDeque&lt;T&gt;</code>, &#x53EA;&#x4E0D;&#x8FC7;T&#x7EA6;&#x675F;&#x4E86;<code>Index</code>, &#x5165;&#x961F;&#x64CD;&#x4F5C;&#x4F1A;&#x68C0;&#x67E5;&#x7D22;&#x5F15;&#x662F;&#x5426;&#x5DF2;&#x5B58;&#x5728;;</li>
<li>graph: <code>DirectedGraph/WithNumNodes/WithnumEdges/WithSuccssors/WithPredecessors/WithStartNode</code>trait&#x7EA6;&#x5B9A;&#x6709;&#x5411;&#x56FE;&#x5B9E;&#x73B0;&#x7ED3;&#x6784;, &#x4E0D;&#x540C;&#x7684;&#x56FE;&#x5B9E;&#x73B0;<code>VecGraph/Sccs/Graph</code>;</li>
<li>obligation_forest: <code>ObligationForest</code>&#x804C;&#x8D23;&#x68EE;&#x6797;&#x5B9E;&#x73B0;, &#x7528;&#x4E8E;&#x52A0;&#x901F;<a href="https://blog.mozilla.org/nnethercote/">&#x7F16;&#x8BD1;&#x901F;&#x5EA6;</a>;</li>
</ul>
<h2 class="mume-header" id="librustc_indextoc"><a href="#toc">librustc_index</a></h2>

<p><code>BitSet/BitMatrix/SparseBitSet/SparseBitMatrix/GrowableBitSet/</code>&#x4F4D;&#x6570;&#x7EC4;&#x548C;&#x4F4D;&#x77E9;&#x9635;;</p>
<h2 class="mume-header" id="librustc_graphviztoc"><a href="#toc">librustc_graphviz</a></h2>

<p>&#x751F;&#x6210;<a href="http://www.graphviz.org/doc/info/lang.html">DOT&#x6587;&#x4EF6;</a>, &#x7528;&#x4E8E;<em>Graphviz</em>&#x53EF;&#x89C6;&#x5316;&#x663E;&#x793A;;</p>
<ul>
<li><code>Labeller</code>&#x5B9A;&#x4E49;&#x4E86;&#x83B7;&#x53D6;&#x56FE;&#x5F62;&#x8282;&#x70B9;&#x7684;&#x5C5E;&#x6027;&#x7684;&#x534F;&#x8BAE;(&#x5982;&#x8282;&#x70B9;id/label/style&#x7B49;&#x7B49;), <code>GraphWalk</code>&#x5B9A;&#x4E49;&#x4E86;&#x6D41;&#x7A0B;&#x56FE;&#x4E0A;&#x8282;&#x70B9;&#x5173;&#x7CFB;, <code>render</code>&#x6E32;&#x67D3;&#x751F;&#x6210;<code>.dot</code>&#x6587;&#x4EF6;;</li>
</ul>
<h2 class="mume-header" id="librustc_drivertoc"><a href="#toc">librustc_driver</a></h2>

<p>Rust&#x7F16;&#x8BD1;&#x5668;&#x5165;&#x53E3;</p>
<h2 class="mume-header" id="librustc_interfacetoc"><a href="#toc">librustc_interface</a></h2>

<p>rustc&#x7F16;&#x8BD1;&#x5668;&#x4F5C;&#x4E3A;&#x4E00;&#x4E2A;&#x5E93;, &#x5C01;&#x88C5;&#x7ED9;&#x4F7F;&#x7528;&#x8005;&#x7684;&#x540C;&#x4E00;&#x63A5;&#x53E3;;</p>
<ul>
<li>interface:
<ul>
<li><code>run_compiler</code>: &#x8C03;&#x7528;&#x7F16;&#x8BD1;&#x5668;&#x8FDB;&#x884C;&#x7F16;&#x8BD1;&#x7684;&#x5165;&#x53E3;&#x51FD;&#x6570;;</li>
<li><code>Compiler</code>:&#x3000;&#x7F16;&#x8BD1;&#x5668;&#x4F1A;&#x8BDD;&#x5B9E;&#x4F8B;;</li>
<li><code>Config</code>: &#x7F16;&#x8BD1;&#x5668;&#x53C2;&#x6570;&#x914D;&#x7F6E;&#x5B9E;&#x4F8B;, &#x4F20;&#x7ED9;<code>run_compiler</code>&#x521B;&#x5EFA;<code>Compiler</code>&#x4F1A;&#x8BDD;&#x5B9E;&#x4F8B;;</li>
</ul>
</li>
<li>queries:
<ul>
<li><code>Queries</code>: &#x7528;&#x4E8E;&#x5B9E;&#x73B0;&#x7F16;&#x8BD1;&#x5668;<em>Demand-Driven</em>&#x7684;&#x7F16;&#x8BD1;;</li>
</ul>
</li>
</ul>
<h2 class="mume-header" id="librustc_lexertoc"><a href="#toc">librustc_lexer</a></h2>

<p>&#x8BCD;&#x6CD5;&#x5206;&#x6790;&#x5668;;</p>
<ul>
<li><code>first_token/strip_shebang</code>: &#x8BCD;&#x6CD5;&#x89E3;&#x6790;&#x7684;&#x5165;&#x53E3;&#x51FD;&#x6570;<br>
<code>tokenize</code>: &#x751F;&#x6210;<code>Token</code>&#x7684;&#x8FED;&#x4EE3;&#x5668;, &#x4E3B;&#x8981;&#x6570;&#x636E;&#x7ED3;&#x6784;: <code>Token/TokenKind/LiteralKind</code>;</li>
</ul>
<h2 class="mume-header" id="librustc_macrostoc"><a href="#toc">librustc_macros</a></h2>

<p>&#x5B8F;&#x5C55;&#x5F00;&#x5668;;</p>
<h2 class="mume-header" id="librustc_asttoc"><a href="#toc">librustc_ast</a></h2>

<p>&#x62BD;&#x8C61;&#x8BED;&#x6CD5;&#x6811;&#x5B9A;&#x4E49;;</p>
<ul>
<li>token: &#x7F16;&#x8BD1;&#x5668;&#x5185;&#x90E8;&#x4F7F;&#x7528;&#x7684;<code>Token</code>&#x5B9A;&#x4E49;;</li>
<li>tokenstream:
<ul>
<li><code>TokenTree</code>: <code>Token</code>&#x6811;;</li>
<li><code>TokenStream</code>: <code>TokenTree</code>&#x5E8F;&#x5217;;</li>
</ul>
</li>
<li>ptr:
<ul>
<li><code>P</code>: &#x7528;&#x4E8E;AST&#x4E2D;&#x7684;&#x667A;&#x80FD;&#x6307;&#x9488;, &#x662F;<code>Box</code>&#x7684;&#x5C01;&#x88C5;. &#x8BE5;&#x667A;&#x80FD;&#x6307;&#x9488;&#x4E0D;&#x80FD;&#x83B7;&#x5F97;<code>*mut T</code>&#x6307;&#x9488;&#x4FEE;&#x6539;&#x5176;&#x6307;&#x5411;&#x7684;&#x5185;&#x5BB9;, &#x5176;<code>Deref/DerefMut</code>&#x5B9E;&#x73B0;&#x8FD4;&#x56DE;&#x7684;&#x662F;&#x6307;&#x9488;&#x7684;&#x501F;&#x7528;(<code>&amp;ptr/ &amp;mut ptr</code>, <code>Box</code>&#x662F;&#x7684;&#x89E3;&#x5F15;&#x7528;&#x8FD4;&#x56DE;&#x7684;&#x662F;&#x6307;&#x9488;&#x6307;&#x5411;&#x5B9E;&#x4F8B;&#x7684;&#x501F;&#x7528;);</li>
</ul>
</li>
<li>visit:
<ul>
<li><code>Visitor</code>: &#x904D;&#x5386;AST&#x7684;trait&#x63A5;&#x53E3;&#x5B9A;&#x4E49;;</li>
</ul>
</li>
<li>mut_visit:
<ul>
<li><code>MutVisitor</code>: &#x904D;&#x5386;AST&#x7684;trait&#x63A5;&#x53E3;&#x5B9A;&#x4E49;;</li>
</ul>
</li>
<li>parser:
<ul>
<li><code>AssocOp/ExprPrecedence</code>: &#x5B9A;&#x4E49;&#x4E86;&#x4E8C;&#x5143;&#x8FD0;&#x7B97;&#x7B26;&#x548C;&#x8868;&#x8FBE;&#x5F0F;&#x7684;&#x4F18;&#x5148;&#x7EA7;;</li>
</ul>
</li>
<li>util/comments:
<ul>
<li><code>CommentStyle</code>: &#x5B9A;&#x4E49;&#x4E86;&#x6CE8;&#x91CA;&#x98CE;&#x683C;;</li>
<li><code>Comment</code>: &#x63CF;&#x8FF0;&#x4E86;&#x6CE8;&#x91CA;&#x7684;&#x5185;&#x5BB9;/&#x98CE;&#x683C;/&#x4F4D;&#x7F6E;&#x7B49;;</li>
</ul>
</li>
<li>ast:
<ul>
<li><code>Label</code>: &#x6807;&#x7B7E;;</li>
<li><code>LifeTime</code>: &#x5B9E;&#x4F8B;&#x5BF9;&#x8C61;&#x7684;&#x751F;&#x547D;&#x5468;&#x671F;;</li>
<li><code>PathSegment/Path</code>: &#x67D0;&#x4E2A;&#x7C7B;&#x578B;/&#x5E38;&#x91CF;/&#x6A21;&#x5757;&#x7684;&#x8DEF;&#x5F84;, &#x5982;<code>std::option::Option</code>;</li>
<li><code>GenericArgs/AngleBracketedArgs/ParenthesizedArgs/GenericArg/GenericParam/WhereClause/Generics</code>: &#x6CDB;&#x578B;&#x76F8;&#x5173;;</li>
<li><code>Pat/PatKind/FieldPat</code>: &#x6A21;&#x5F0F;&#x5339;&#x914D;&#x76F8;&#x5173;;</li>
<li><code>StmtKind/Local/Field/Block/ExprKind/Expr</code>: &#x8BED;&#x53E5;&#x8868;&#x8FBE;&#x5F0F;&#x76F8;&#x5173;;</li>
<li><code>Item/ItemKind</code>: AST&#x5143;&#x7D20;;</li>
</ul>
</li>
</ul>
<h2 class="mume-header" id="librustc_ast_prettytoc"><a href="#toc">librustc_ast_pretty</a></h2>

<p>&#x62BD;&#x8C61;&#x8BED;&#x6CD5;&#x6811;&#x683C;&#x5F0F;&#x5316;&#x8F93;&#x51FA;</p>
<h2 class="mume-header" id="librustc_ast_passestoc"><a href="#toc">librustc_ast_passes</a></h2>

<p>&#x5BF9;&#x62BD;&#x8C61;&#x8BED;&#x6CD5;&#x6811;&#x8FDB;&#x884C;&#x4E00;&#x4E9B;&#x8BED;&#x6CD5;&#x9A8C;&#x8BC1;;</p>
<h2 class="mume-header" id="librustc_ast_loweringtoc"><a href="#toc">librustc_ast_lowering</a></h2>

<p>AST&#x8F6C;&#x4E3A;HIR;</p>
<ul>
<li><code>lower_crate/LoweringContext</code>:</li>
</ul>
<h2 class="mume-header" id="librustc_hirtoc"><a href="#toc">librustc_hir</a></h2>

<p>HIR</p>
<h2 class="mume-header" id="librustc_middlelibrustc_mirtoc"><a href="#toc">librustc_middle/librustc_mir</a></h2>

<p>MIR</p>
<h2 class="mume-header" id="librustc_codegen_ssatoc"><a href="#toc">librustc_codegen_ssa</a></h2>

<p>&#x63D0;&#x4F9B;MIR&#x8F6C;&#x4E3A;&#x4E8C;&#x8FDB;&#x5236;&#x7684;&#x7EDF;&#x4E00;&#x7684;&#x62BD;&#x8C61;&#x63A5;&#x53E3;;</p>
<h2 class="mume-header" id="librustc_codegen_llvmtoc"><a href="#toc">librustc_codegen_llvm</a></h2>

<p>MIR&#x8F6C;&#x4E3A;&#x4E8C;&#x8FDB;&#x5236;, &#x540E;&#x7AEF;&#x4E3A;LLVM;</p>
<h2 class="mume-header" id="%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99toc"><a href="#toc">&#x53C2;&#x8003;&#x8D44;&#x6599;</a></h2>

<ul>
<li><a href="https://github.com/rust-lang/rust.git">Rust 1.44.1</a>;</li>
<li><a href="https://blog.rust-lang.org/2016/04/19/MIR.html">Introducing MIR</a>;</li>
</ul>

      </div>
      
      
    
    
    <script>
// config mermaid init call
// http://knsv.github.io/mermaid/#configuration
//
// You can edit the 'MERMAID_CONFIG' variable below.
MERMAID_CONFIG = {
  startOnLoad: false
}

if (window['MERMAID_CONFIG']) {
  window['MERMAID_CONFIG'].startOnLoad = false
  window['MERMAID_CONFIG'].cloneCssStyles = false
  window['MERMAID_CONFIG'].theme = "default"
}
mermaid.initialize(window['MERMAID_CONFIG'] || {})
if (typeof(window['Reveal']) !== 'undefined') {
  function mermaidRevealHelper(event) {
    var currentSlide = event.currentSlide
    var diagrams = currentSlide.querySelectorAll('.mermaid')
    for (var i = 0; i < diagrams.length; i++) {
      var diagram = diagrams[i]
      if (!diagram.hasAttribute('data-processed')) {
        mermaid.init(null, diagram, ()=> {
          Reveal.slide(event.indexh, event.indexv)
        })
      }
    }
  }
  Reveal.addEventListener('slidechanged', mermaidRevealHelper)
  Reveal.addEventListener('ready', mermaidRevealHelper)
} else {
  mermaid.init(null, document.getElementsByClassName('mermaid'))
}
</script>
    
    
    
    
    
  
    </body></html>